<?php

namespace app\admin\controller;

use app\BaseController;
use think\exception\HttpResponseException;

class AdminBase extends BaseController
{
    public $adminSession = null;

    public function initialize()
    {
        // 为了安全起见，好管理继承父类的initialize
        parent::initialize();

        // 通过isLogin获取session是否存在的结果
        if (empty($this->isLogin())) {
            /**
             *  实际上这里的return出去后，接受者其实是BaseController的
             * __construct方法，并没有在控制器层做return，必须要在中间
             * 件使用redirect。
             *
             *  return redirect((string) url('login/index'));
             */

            /**
              * 但是会报重定向次数过多，流程如下
              * 先跳转到Loign/index方法，但login继承了AdminBase控制器，
              * 此时还是没有session，有回到到了return $this->redirect((string) url('login/index'),302);
              * 开始死循环！
            */
            return $this->redirect((string) url('login/index'), 302);
        }
    }

    // 通过session判断是否登录
    public function isLogin()
    {
        $this->adminSession = session('?admin_user');
        if (empty($this->adminSession)) {
            return false;
        }
        return true;
    }

    public function redirect(...$args)
    {
        throw new HttpResponseException(redirect(...$args));
    }
}
